import random
import datetime
import re
import string
from datetime import timedelta


def generate_custom_string(rule="规则", num_digits=5):
    # 生成随机数字部分
    random_number = ''.join(random.choices('0123456789', k=num_digits))

    # 获取当前日期并格式化
    current_date = datetime.datetime.now().strftime('%Y%m%d')

    # 拼接成最终字符串
    custom_string = f"{rule}{random_number}{current_date}"

    return custom_string


def generate_random_string(length):
    # 定义字符集，包含大小写英文字母和数字
    characters = string.ascii_letters + string.digits
    # 使用 random.choice 从字符集中随机选择字符
    random_string = ''.join(random.choice(characters) for _ in range(length))
    return random_string

def generate_random_string_b(length):
    all_characters = string.ascii_letters + string.digits + string.punctuation + "".join(re.findall(r'[\u4e00-\u9fff]', '你好，世界！'))
    return ''.join(random.choice(all_characters) for _ in range(length))


def get_date_in_future_or_past(days_offset):
    """
    根据给定的天数偏移量获取日期。
    :param days_offset: 整数，正数表示未来的天数，负数表示过去的天数
    :return: 格式化的日期字符串 YY-MM-DD HH:MM:SS
    """
    # 获取当前时间
    now = datetime.datetime.now()
    # 计算目标日期
    target_date = now + timedelta(days=days_offset)
    # 格式化日期
    target_date_str = target_date.strftime('%Y-%m-%d %H:%M:%S')
    return target_date_str



def test():
    print(len(generate_random_string(201)))


